/*
	Button Functions
	Updated: 2/19/08
	
	Created By: Jared Bayne
	E-Mail:		JaredNBayne@gmail.com
	Created On:	February 13th, 2008

	Purpose:	This file will handle all of the button functions
	



*/

#define BTop		GET_BIT(PINA).bit0
#define BLeft		GET_BIT(PINA).bit1
#define BMiddle		GET_BIT(PINA).bit2
#define BRight		GET_BIT(PINA).bit3
#define BBottom		GET_BIT(PINA).bit4

#define yes	1
#define no 0
void Line_Up_Bot(void);
void Input_Sequence(void);
int Read_Button_Press(void);
void simulate_input_sequence(void);
int Wait_For_Wireless_Start(void);
void drive_with_buttons(int speed);
int Scan_Button_Press(void);


void drive_with_buttons(int speed)
{
	
	
	switch (Scan_Button_Press())
	{
		case 1  : 
			goleft(speed);
			break;
		case 2  : 
			stop();
			break;
		case 3  : 
			goright(speed);
			break;
		case 4  : 
			goforward(speed);
			break;
		case 5  :
			gobackward(speed);
			break;
		default: 
			stop();								
			break;
	}


}




//void simulate_input_sequence(void)
//{
//
//	if (ROUNDNUMBER==1)
//	{
//		heavy_goes=room_one;
//		medium_goes=room_two;
//		light_goes=room_three;
//	}
//	else
//	{
//		
//		heavy_goes=red;
//		medium_goes=green;
//		light_goes=yellow;
//	
//	
//	
//	}
//
//
//}

//int LightGoes,MiddleGoes,HeavyGoes;

//void Input_Sequence(void)
//{
//	int btn, finalbtn;
//	
//	if (ROUNDNUMBER==1)
//	{
//		//We are in round 1
//		btn=3;
//		finalbtn=0;
//		while (finalbtn==0)
//		{
//			_delay_ms(500);
//			while (btn==3)
//			{
//				_delay_ms(500);
//				writeln("Take Light To: ");
//				LCDLine2();
//				write("1     2     3");
//				LightGoes=Read_Button_Press();
//				writeln("OK");
//				_delay_ms(500);
//				writeln("Confirm L->");
//				LCDDispInt(LightGoes);
//				LCDLine2();
//				write("YES           NO");
//				btn=Read_Button_Press();
//				writeln("OK");
//				if (btn!=1)
//					btn=3;
//			}	
//			btn=3;
//			
//			while (btn==3)
//			{
//				_delay_ms(500);
//				writeln("Take Middle To: ");
//				LCDLine2();
//				write("1     2     3");
//				MiddleGoes=Read_Button_Press();
//				writeln("OK");
//				_delay_ms(500);
//				writeln("Confirm M->");
//				LCDDispInt(MiddleGoes);
//				LCDLine2();
//				write("YES           NO");
//				btn=Read_Button_Press();
//				writeln("OK");
//				if (btn!=1)
//					btn=3;
//			}
//			btn=3;
//			while (btn==3)
//			{
//				_delay_ms(500);
//				writeln("Take Heavy To: ");
//				LCDLine2();
//				write("1     2     3");
//				HeavyGoes=Read_Button_Press();
//				writeln("OK");
//				_delay_ms(500);
//				writeln("Confirm H->");
//				LCDDispInt(HeavyGoes);
//				LCDLine2();
//				write("YES           NO");
//				btn=Read_Button_Press();
//				writeln("OK");
//				if (btn!=1)
//					btn=3;
//			}
//			btn=3;
//		
//			//Final Confirm
//			_delay_ms(1000);
//			writeln("Confirm: ");
//			if (LightGoes==1)
//				write("L");
//			else if (MiddleGoes==1)
//				write("M");
//			else
//				write("H");
//			write(" ");
//			if (LightGoes==2)
//				write("L");
//			else if (MiddleGoes==2)
//				write("M");
//			else
//				write("H");
//			write(" ");
//			if (LightGoes==3)
//				write("L");
//			else if (MiddleGoes==3)
//				write("M");
//			else
//				write("H");
//		
//			LCDLine2();
//			write("NO    YES     NO");
//				finalbtn=Read_Button_Press();
//				if (finalbtn!=2)
//					finalbtn=0;
//		}
//		//If we make it here, we have confirmed the sequence
//		//So lets actually set it
//		heavy_goes=HeavyGoes;
//		medium_goes=MiddleGoes;
//		light_goes=LightGoes;
//	}
//	else
//	{
//		//We are in round 2...maybe, I bet we won't ever run this code
//	
//	
//	
//		//We are in round 1
//		btn=3;
//		finalbtn=0;
//		while (finalbtn==0)
//		{
//			_delay_ms(500);
//			while (btn==3)
//			{
//				_delay_ms(500);
//				writeln("Take Light To: ");
//				LCDLine2();
//				write("R     G     Y");
//				LightGoes=Read_Button_Press()-1;
//				writeln("OK");
//				_delay_ms(500);
//				writeln("Confirm L->");
//				LCDDispInt(LightGoes);
//				LCDLine2();
//				write("YES           NO");
//				btn=Read_Button_Press();
//				writeln("OK");
//				if (btn!=1)
//					btn=3;
//			}	
//			btn=3;
//			
//			while (btn==3)
//			{
//				_delay_ms(500);
//				writeln("Take Middle To: ");
//				LCDLine2();
//				write("R     G     Y");
//				MiddleGoes=Read_Button_Press()-1;
//				writeln("OK");
//				_delay_ms(500);
//				writeln("Confirm M->");
//				LCDDispInt(MiddleGoes);
//				LCDLine2();
//				write("YES           NO");
//				btn=Read_Button_Press();
//				writeln("OK");
//				if (btn!=1)
//					btn=3;
//			}
//			btn=3;
//			while (btn==3)
//			{
//				_delay_ms(500);
//				writeln("Take Heavy To: ");
//				LCDLine2();
//				write("R     G     Y");
//				HeavyGoes=Read_Button_Press()-1;
//				writeln("OK");
//				_delay_ms(500);
//				writeln("Confirm H->");
//				LCDDispInt(HeavyGoes);
//				LCDLine2();
//				write("YES           NO");
//				btn=Read_Button_Press();
//				writeln("OK");
//				if (btn!=1)
//					btn=3;
//			}
//			btn=3;
//		
//			//Final Confirm
//			_delay_ms(1000);
//			writeln("Confirm: ");
//			if (LightGoes==0)
//				write("L");
//			else if (MiddleGoes==0)
//				write("M");
//			else
//				write("H");
//			write(" ");
//			if (LightGoes==1)
//				write("L");
//			else if (MiddleGoes==1)
//				write("M");
//			else
//				write("H");
//			write(" ");
//			if (LightGoes==2)
//				write("L");
//			else if (MiddleGoes==2)
//				write("M");
//			else
//				write("H");
//		
//			LCDLine2();
//			write("NO    YES     NO");
//				finalbtn=Read_Button_Press();
//				if (finalbtn!=2)
//					finalbtn=0;
//		}
//		//If we make it here, we have confirmed the sequence
//		//So lets actually set it
//		heavy_goes=HeavyGoes;
//		medium_goes=MiddleGoes;
//		light_goes=LightGoes;
//	
//	
//	
//	
//	
//	
//	
//	}
//	
//	writeln("Input Complete");
//	_delay_ms(1500);
//}

int Read_Button_Press(void)
{
	int pressed=0;
	
	while (pressed==0)
	{
		if (BLeft==OFF)
			pressed=1;
		else if (BMiddle==OFF)
			pressed=2;
		else if (BRight==OFF)
			pressed=3;
		else if (BTop==OFF)
			pressed=4;
		else if (BBottom==OFF)
			pressed=5;
	
	
	
	}


	return pressed;
}

int Scan_Button_Press(void)
{
	int pressed=0;

	if (BLeft==OFF)
		pressed=1;
	else if (BMiddle==OFF)
		pressed=2;
	else if (BRight==OFF)
		pressed=3;
	else if (BTop==OFF)
		pressed=4;
	else if (BBottom==OFF)
		pressed=5;

	return pressed;
}


//void Line_Up_Bot(void)
//{
//	stop();
//
//	while((BMiddle==ON) && (BRight==ON))
//	{
//		Disp_FLS();
//		write("B:");
//		LCDDispInt(how_many_see_black());
//		LCDLine2();
//		write("0123456789 Right");
//		_delay_ms(100);
//	
//	
//	}
//	
//	if (BRight==OFF)
//		Do_Wireless_Start=0;
//
//
//
//}

int Wait_For_Wireless_Start(void)
{

	int close=0,temp=-99;

	while(temp!='#')
	{
		putchar1('@');
		putchar1('2');
		close=scan_usart1();
		temp=scan_usart1();
		
	}
	
	//if (close=='1')
		return yes;
	//else
	//	return no;
}
